package com.obrempon.credit.market.configs

import com.obrempon.credit.market.sdk.analyse.ObremponAnalyseBuilder
import com.obrempon.credit.market.sdk.analyse.ObremponAnalyseUtil
import com.obrempon.credit.market.utils.ObremponDateUtil
import com.obrempon.credit.market.utils.shared.ObremponSharedHelper
import com.obrempon.credit.market.utils.shared.ObremponSharedKey
import org.json.JSONObject
import java.util.Random

/**
 * ApiUrl
 * @Author wwdeng
 * @CreateTime: 2024/12/5 15:48
 * @Annotation：
 */
object ObremponApiUrl {

    /**
     * https://www.ffservices.site
     * http://159.138.165.72
     * 域名
     */
    const val OBREMPON_HOST = "http://159.138.165.72"

    /**
     * 地区转发
     * /v1/timezonePath
     */
    const val OBREMPON_TIMEZONE_URL = "/n7tPpJbEyuAVSwqfqCuuRQ"

    /**
     * APP业务统一请求接口
     * /v1/commonApi
     */
    private val OBREMPON_COMMON_URLS = mutableListOf(
        "/qdxJLUE8Yj7HnV8MNm3DkQ",
        "/VVzOkPxVMKrPqjwg2GtsfA",
        "/iViIg3rai1XyN9x1BLtO1w",
        "/imF9BTGjKalx4HE8KMdoEg",
        "/ToKDrSwutK4IWt7iQPjVEg",
        "/t1sOz3S3zCn3g1nEww1g7w",
        "/kCVG73L06eJlsVyuHt1xNQ",
        "/cB6OxWVdsJbdeMEMwKH3A",
        "/egt16HclDOpcjALtuFGYTg",
        "/aRGqGVi8EDuc5fnl8wrBHg",
        "/gxOqbtL5OFc47cI5m1mMrQ",
        "/Sf5IWaIFXLd165QuawhmZw",
        "/FdQSF39wg6mWtRMhSq0Q",
    )

    /**
     * 图片上传
     * /v1/imageUpload
     */
    const val OBREMPON_UPLOAD_FILE_URL = "/vwrcpSXARqYYf8L0FWGRQg"

    /**
     * 获取请求Url
     */
    fun queryEasyHttpUrl(isUpload: Boolean = false, urlIndex: Int = -1): String{
        var url = getRandomUrl(urlIndex)
        if (isUpload){//上传
            url = OBREMPON_UPLOAD_FILE_URL
        }
        //地区转发
        val timeZone = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TIMEZONE)
        if (timeZone.isNotEmpty()){
            return "/$timeZone$url"
        }
        return url
    }

    /**
     * 添加公共参数
     */
    fun JSONObject.addCommonParams(): JSONObject {
        apply {
            put("product", ObremponAnalyseBuilder.product)                                           //  产品 APP名称
            put("token", ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TOKEN))                                               //  token
            put("apiVersion","v3")                                                      //  接口版本
            put("androidId", ObremponAnalyseUtil.getAndroidId())                                    //  安卓id
            put("advertId", ObremponAnalyseUtil.getAdId())                                          //  广告id
            put("aduid", ObremponAnalyseUtil.getAdId())                                             //  广告id
            put("aduidPath", ObremponAnalyseUtil.getAndroidId())                                    //  广告地址
            put("isLimitAdTrackingEnabled", ObremponAnalyseUtil.getAdEnabled().toString())          //  是否限制广告id，1是 0否
            put("userId", ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_USERID))                                             //  userId
            put("version", ObremponAnalyseBuilder.libVersion)                                        //  app版本号
            put("timp", System.currentTimeMillis())                                            //  时间戳
            put("country", ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TIMEZONE_COUNTRY))                                  //国家标识
            put("tzid", ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TIMEZONE_ID))                                          //当前时区id
//            put("path","")                                                                        //  传映射后的接口路径，不带前面的/号
        }
        return this.addCustomParams()
    }

    /**
     * 添加随机参数增量 4
     */
    private fun JSONObject.addCustomParams(): JSONObject {
        val loginMobile = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_MOBILE)
        val launchTime = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_APP_START_TIME)
        val loginTime = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_LOGIN_TIME)
        val currentTime = ObremponDateUtil.getFormatTime(System.currentTimeMillis(),"dd/MM/yyyy HH:mm:ss")

        put("loginMobile",loginMobile)
        val randomIndex = Random().nextInt(4)
        if (randomIndex == 1){
            apply {
                put("startTime",launchTime)
            }
            return this
        }
        if (randomIndex == 2){
            apply {
                put("startTime",launchTime)
                put("loginTime",loginTime)
            }
            return this
        }

        if (randomIndex == 3){
            apply {
                put("startTime",launchTime)
                put("loginTime",loginTime)
                put("currentTime",currentTime)
            }
        }
        return this
    }

    /**
     * 获取随机Url
     */
    fun getRandomUrl(index: Int = -1): String{
        var urlIndex = index
        if (urlIndex == -1 || urlIndex > OBREMPON_COMMON_URLS.size - 1){
            urlIndex = Random().nextInt(OBREMPON_COMMON_URLS.size)
        }
        return OBREMPON_COMMON_URLS[urlIndex]
    }
}